The Challenge of Indirection: Treating Flags During Sound Analysis of Machine Code
نویسندگان
چکیده
A key problem in reverse engineering executables is to reconstruct the programs’s control flow, i.e., to construct a graph representation of the byte sequences or paths a computer may execute as instructions. Unfortunately, exactly computing all feasible paths of a program is not possible. Therefore, the task of precise control flow reconstruction and disassembly is also not solvable in general, and one must be content with an approximative answer. Contemporary disassemblers, such as objdump, radare2, and IDAPro either use linear sweep[5] or recursive descent[5] techniques, enhanced by heuristics, to compute an approximated disassembly. As a result, they may produce assembly that not only omits paths that were feasible in the analyzed binary, but also contain paths that were infeasible in the analyzed binary. While this form of approximation is acceptable for certain tasks, e.g., program understanding, it is unacceptable for tasks such as verification, where one reasons about statements that must hold on all paths (e.g., there exists no path containing an exploitable sequence). One approach to enable tasks such as verification is to allow only overapproximation, i.e., the reconstructed control flow must contain at least all paths that are feasible in the analyzed executable, but may contain additional paths. Tools that overapproximate in this way are called sound. When a verification task requires proving that an illegal program state cannot be reached, a sound disassembly can be used. If no illegal program state can be reached in the sound disassembly, no illegal program state is reachable in the original program. If it cannot be shown that no illegal program state can be reached in the sound disassembly, then it is unclear if a fault exists or not. In the following sections, we will first explain sound control flow reconstruction via value set analysis[1] (Section 2) and introduce a challenge that is unique to the analysis of machine code (Section 3). In sections 3.2 and 3.3, we will present two approaches to this problem that we implemented in our BDDStab[4] plug-in for the software analysis framework Jakstab[3]. 2 Sound Analysis of Machine Code
منابع مشابه
Development and Validation of Sound Transmission Loss Measurement System for Measuring Muffler Performance
Muffler is a part of the vehicle exhaust system that absorb or reflect sound waves to reduce exhaust noise. One of the most important determinants of a muffler performance is the amount of attenuation that has on its input wave; this parameter is known as sound transmission loss. Four - mic standard test is one way to determine this parameter which is used in this paper. In this study, a test d...
متن کاملValidity of Selected WBC Differentiation Flags in Sysmex XT-1800i
Background: Automatic Cell Counter devises make the CBC differential very easy and delivering the results in few second. However, the problem with this device is facing a flag requires a time-consuming microscopic review of the specimen which causes unacceptable wait times for patient as well as costs for laboratories. In this study, we calculated the validity of WBC d...
متن کاملAutomatic Configuration of GCC Using Irace
Automatic algorithm configuration techniques have proved to be successful in finding performance-optimizing parameter settings of many search-based decision and optimization algorithms. A re-current, important step in software development is the compilation of source code written in some programming language into machine-executable code. The generation of performance-optimized machine code itse...
متن کاملCan Aspects Be Injected? Experience with Replication and Protection
Separation of concerns, which allows programming the nun-functional aspects of an application in a more or less orthogonal manner from the functional code, is becoming a general trend in software development. The most widely used architectural pattern for implementing aspects involves indirection objects, raising a performance overhead at execution time. Thus, it appears as being an attractive ...
متن کاملModeling and Monitoring of Hierarchical State Machines in Scala
Hierarchical State Machines (HSMs) are widely used in the design and implementation of spacecraft flight software. However, the traditional approach to using HSMs involves graphical languages (such as UML statecharts) from which implementation code is generated (e.g. in C or C). This is driven by the fact that state transitions in an HSM can result in execution of action code, with associated s...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Softwaretechnik-Trends
دوره 36 شماره
صفحات -
تاریخ انتشار 2016